// pages/AI/index.js

import DB from '../../utils/db';
import AI from '../../utils/ai';

Page({

  /**
   * 页面的初始数据
   */
  data: {
    value: '/pages/AI/index',
    list: [
      { value: '/pages/index/index', icon: 'home', ariaLabel: '首页' },
      { value: '/pages/template/index', icon: 'file', ariaLabel: '模版' },
      // { value: '/pages/evaluating/index', icon: 'app', ariaLabel: 'AI简历测评' },
      // { value: '/pages/introduction/index', icon: 'chat-bubble-1', ariaLabel: 'AI自我介绍建议' },
      { value: '/pages/AI/index', icon: 'logo-adobe-illustrate', ariaLabel: 'AI助手' },
      // { value: 'label_3', icon: 'user', ariaLabel: '我的' },
    ],
  },

  onChange(e) {
    // this.setData({
    //    value: e.detail.value,  
    // });
    // console.log(e.detail.value)
    wx.switchTab({
      url: e.detail.value,
    })
  },

  evaluating() {
    wx.navigateTo({
      // url: '/pages/templateDetails/index',
      url: '/pages/evaluating/index',
    })
  },

  introduction() {
    wx.navigateTo({
      // url: '/pages/templateDetails/index',
      url: '/pages/introduction/index',
    })
  },

  mbti() {
    wx.navigateTo({
      url: '/pages/mbti/index',
    })
  },
  selectCreateResume(type){
      // console.log(this.data.openId)
      DB.select('selectCreateResume', this.data.openId).then((resp) => {
        this.setData({
          record: resp.result,
        });
        // console.log(this.data.record)
        this.markdown(this.data.record,type)
      }).catch((e) => {
        console.log(e);
        wx.hideLoading();
      });
    },
  
    markdown(record,type) {
      let personalKeyInformation = ''
      let evaluation = ''
      let education = ''
      let workExperience = ''
      let project = ''
      let qualificationCertificate = ''
      personalKeyInformation = `
      \n- **姓名**：${record.personalKeyInformation.userText}
      - **性别**：${record.personalKeyInformation.genderText}
      - **出生年月**：${record.personalKeyInformation.birthText}
      - **联系方式**：${record.personalKeyInformation.phone}
      - **电子邮箱**：${record.personalKeyInformation.email}
      - **求职意向**：${record.personalKeyInformation.postText}
      `
      evaluation = `
      \n${record.evaluation.evaluation}
      `
      for(var j = 0; j < record.education.length; j++){
        education += `\n### ${record.education[j].schoolText} - ${record.education[j].majorText} - ${record.education[j].educationText}（${record.education[j].enrolText}-${record.education[j].graduateText}）
        \n- **主修课程**：${record.education[j].subject}` 
      };
      for(var j = 0; j < record.workExperience.length; j++){
        workExperience += `\n### ${record.workExperience[j].companyText} - ${record.workExperience[j].postText} （${record.workExperience[j].entryText}-${record.workExperience[j].resignText}）
        \n- **工作经历**：${record.workExperience[j].workContent}` 
      };
      for(var j = 0; j < record.project.length; j++){
        project += `\n### ${record.project[j].projectText} - ${record.project[j].roleText} （${record.project[j].entryText}-${record.project[j].resignText}）
        \n${record.project[j].projectContent}` 
      };
      for(var j = 0; j < record.qualificationCertificate.length; j++){
        qualificationCertificate += `
        \n- **证书**：${record.qualificationCertificate[j].certificate}` 
      };
      const userInput = `\n# 个人简历
      \n---
      \n## 个人信息
      ${personalKeyInformation}
      \n---
      \n## 自我评价
      ${evaluation}
      \n---
      \n## 教育背景
      ${education}
      \n---
      \n## 工作经历
      ${workExperience}
      \n---
      \n## 项目经验
      ${project}
      \n---
      \n## 证书与荣誉
      ${qualificationCertificate}`;
  
      const systemPrompt =`# 简历评价 AI 智能体提示词
        ## C - Context (背景信息)
        你将扮演一位专业的简历评价顾问，拥有多年的人力资源经验和深厚的简历分析技能。你的任务是为求职者提供精准、建设性的简历评价和建议。
        ## O - Objective (明确目标)
        帮助求职者全面了解自己简历的优势与不足，并提供具体的修改建议，以提高简历的吸引力和竞争力。
        ## S - Style (希望的风格)
        专业、细致且鼓励性的语言风格。既要指出问题，又要给予求职者改进的信心和方向。
        ## T - Tone (语调)
        语调应保持中立但带有建设性，既要严肃认真，又要避免过于苛刻，以鼓励求职者积极改进。
        ## A - Audience (目标受众)
        主要面向正在寻找工作或计划更换工作的求职者，尤其是对简历撰写不够熟悉或希望提升简历质量的群体。
        ## R - Response (回应类型)
        简历评分：总100分根据简历情况给出对应评分
        - **简历整体评价**：概括性地指出简历的整体效果，如结构是否清晰、内容是否突出等。
        - **亮点突出**：指出简历中的亮点和优势，增强求职者的自信。
        - **具体问题分析**：详细列举简历中存在的问题，如表述不清、缺乏关键信息等。
        - **改进建议**：针对每个问题提供具体的修改建议，帮助求职者优化简历。
        - 输出示例：{ "resume_evaluation": {"score": 65,"overall_comment": "简历整体结构较为完整，但存在明显的时间线矛盾与内容细节缺失问题。核心优势（项目成果）未得到有效凸显，职业发展路径存在逻辑断层。",    "highlights": "项目经验中包含可量化的运营成果（67万粉丝增长/互动量提升1000%）","issues": [{"severity": "致命","description": "时间线严重矛盾：2003年出生的求职者声称2003年参与项目工作，且2010-2013年本科期间出现2020年工作经历"}], "improvement_suggestions": [{"category": "基础信息","action": "立即修正时间矛盾，建议核实出生年份与工作经历的对应关系"} ]  }}。
        ## 限制：
      - 只评价简历评价，不回答与项目内容无关的问题。
      - issues.severity分:致命,高,中,低四挡
      - 使用json格式信息输出`
            
      AI.hunyuan("hunyuan-t1-latest",systemPrompt,userInput).then(result => {
        // console.log("AI生成的结果:", result);
        // this.setData({
        //   text: app.towxml(String(result.replace(/^[\s]+/, "")), 'markdown', {
        //     theme: 'light'
        //   }),
        //   visible:true
        // })
        const jsonData = JSON.parse(result.match(/\{[\s\S]*\}/));
        if (type == 'add') {
            DB.add('addEvaluating', {openId:wx.getStorageSync("openId"),text:jsonData}).then(() => {
            this.selectEvaluation()
            // wx.hideLoading();
          })
        }else {
          DB.update('addEvaluating', {_id:this.data.form._id,text:jsonData}).then(() => {
            this.selectEvaluation()
            // wx.hideLoading();
          })
        }
        
      })
        .catch(error => {
          console.log(error)
          wx.hideLoading();
          wx.showToast({
            title: '调用AI失败',
            icon: 'error'
          })
        });
    },
  
    onAddAI(){ 
      // console.log(temp)
      wx.showLoading({
        title: 'AI评测中\n预计2-4分钟', // 这里设置提示词
        mask: true // 显示透明蒙层
      });
      this.selectCreateResume('add')
  
    },

    onUpdateAI(){ 
      // console.log(temp)
      wx.showLoading({
        title: 'AI评测中\n预计2-4分钟', // 这里设置提示词
        mask: true // 显示透明蒙层
      });
      this.selectCreateResume('update')
  
    },
  selectEvaluation(){
      DB.select('selectEvaluating', this.data.openId).then((resp) => {
            if(resp.result.data.length > 0){
              this.setData({
                type: 1,
                form: resp.result.data[0],
                jsonData: resp.result.data[0].text,
                // console.log(jsonData); // 输出: 65
              });
            }else{
              this.setData({
                type: 0,
              });
            }
           
        

        // console.log(resp.result.data.length); // 输出: 65
        wx.hideLoading();
      }).catch((e) => {
        console.log(e);
        this.setData({
          showUploadTip: true
        });
        wx.hideLoading();
      });
    },

    createResume() {
      wx.navigateTo({
        url: '/pages/createResume/index',
      })
    },
  

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    wx.showLoading({
      title: '数据加载中', // 这里设置提示词
      mask: true // 显示透明蒙层
    });
    this.setData({
      'openId': wx.getStorageSync("openId")
    })
    const aiNumber = wx.getStorageSync("aiNumber")
    // console.log(aiNumber.number)
   
    this.selectEvaluation()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  // onShareAppMessage() {

  // }
})